import streamlit as st
from chat_util import get_response

# 设置聊天标题
st.title('黑马智聊机器人')

# 判断当前聊天会话有没有设置过缓冲区.如果没有就设置
if 'messages' not in st.session_state:
    # 设置一个聊天的缓冲区:(为了记录聊天记录.设置了保存的位置.)
    # 存储聊天消息的键和值
    st.session_state['messages'] = [
        {"role":"assistant","content":'您好,我是黑马智聊机器人,有什么可以帮助您的么?'}
    ]

# 遍历聊天记录.设置到聊天记录框.
for message in st.session_state['messages']:
    with st.chat_message(message['role']):# 消息中取出角色
        st.write(message['content']) # 消息中取出内容



#设置聊天框--最底部输入框.
message = st.chat_input('请输入对机器人说的话...')

# 处理用户录入后点击发送按钮.
if message:
    # 把消息添加到聊天记录
    st.session_state['messages'].append({"role":"user","content":message})
    # 展示用户录入的结果到聊天框[中间的消息记录]
    with st.chat_message('user'):
        st.write(message)

    # 设置动画
    # 10. 向utils工具箱发起请求，返回响应
    with st.spinner("AI小助手正在思考中..."):
        # 调用工具类.把消息交给工具的聊天功能.
        response = get_response(message)  # todo 需要等待时间的.

    # 把结果页加入到聊天消息
    st.session_state['messages'].append({"role": "assistant", "content": response.message.content})
    # 展示结果到聊天记录[中间的消息记录]
    with st.chat_message('assistant'):
        st.write(response.message.content)


